#ifndef _GAME_H_
#define _GAME_H_


typedef struct {
	int x;
	int y;
} POINT;

typedef struct {
	char direction;
	POINT position;
	POINT old_position;
	int value;
	char color;
	int move_tick;
} BALL;

typedef struct {
	int head_dir_x;
	int head_dir_y;
	
	int next_head_dir_x;
	int next_head_dir_y;

	POINT* old_tail;
	
	POINT** body;
	int head_ptr;
	int length;
	
} PLAYER;

typedef struct {
	int points;
	int status;
} GAME_STATE;

typedef struct {
	int width;
	int height;
	BALL** balls;
	int ball_count;
	int max_allocated_balls;
	WINDOW* win;
	PLAYER* player;
	GAME_STATE* state;
} FIELD;



extern GAME_STATE* state;

void set_lost(GAME_STATE* state);
void set_won(GAME_STATE* state);
void eat_ball(FIELD* field, int pos);
void play_game(GAME_STATE* state);
#endif
